/*
剑指 Offer 65. 不用加减乘除做加法
 */
public class Offer65 {

  public static void main(String[] args) {
    System.out.println(new Offer65().add(20, 4));
    /*
    & 与运算 两个都是1才为1
    010100
    101000
    000000

    010100
    000100
    000100
    ^ 异或运算 相同为0 不同为1
    010100  20
    000100  4
    010000  16


    */
  }

  public int add(int a, int b) {
    while(b != 0) { // 当进位为 0 时跳出
      int c = (a & b)<< 1;  // c = 进位
      a = a^b; // a = 非进位和
      b = c; // b = 进位
    }
    return a;
  }
}
